package com.zhucan.account.application.command;

import com.zhucan.account.application.command.cmd.*;

/**
 * author: zhuCan
 * date: 2020/8/4 19:55
 * description:
 */
public interface AccountCommandService {

  /**
   * 开户
   *
   * @param createCommand
   */
  void createAccount(AccountCreateCommand createCommand);

  /**
   * 设置账户密码
   *
   * @param changeCommand
   */
  void setPassword(Long id, AccountPasswordChangeCommand changeCommand);

  /**
   * 冻结账户
   *
   */
  void suspendAccount(Long id);

  /**
   * 存钱
   *
   * @param depositCommand
   */
  void deposit(Long id, AccountDepositCommand depositCommand);

  /**
   * 取钱
   *
   * @param withdrawCommand
   */
  void withdraw(Long id, AccountWithdrawCommand withdrawCommand);

  /**
   * 转账
   *
   * @param id
   * @param targetId
   * @param transferCommand
   */
  void transfer(Long id, Long targetId, AccountTransferCommand transferCommand);
}
